//获取时间戳字符串
function GetURLTimeStr(strLength) {
	return (new Date().format('yyyy-MM-dd HH:mm:ss:fff')).substr(2).replace(/-/g, '').replace(/:/g, '').replace(/ /g, '').replace(/\./g, '')
		.substr(0, strLength);
}

/*
函数：日期 加n天
参数：n是天数
返回：n天后的日期
*/
Date.prototype.addDays = Date.prototype.addDays || function(n) {
	this.setDate(this.getDate() + n);
	return this;
}

/*
函数：日期 减n天
参数：n是天数
返回：n天后的日期
*/
Date.prototype.minusDays = Date.prototype.minusDays || function(n) {
	this.setDate(this.getDate() - n);
	return this;
}

/*
函数：日期 加n天
参数：n是天数
返回：n天后的日期
*/
Date.prototype.getWeek = Date.prototype.getWeek || function(date) {
	var n = date.getDay();
	var rtnStr = "";
	switch (n) {
		case 0: {
			rtnStr = "星期日";
			break;
		}
		case 1: {
			rtnStr = "星期一";
			break;
		}
		case 2: {
			rtnStr = "星期二";
			break;
		}
		case 3: {
			rtnStr = "星期三";
			break;
		}
		case 4: {
			rtnStr = "星期四";
			break;
		}
		case 5: {
			rtnStr = "星期五";
			break;
		}
		case 6: {
			rtnStr = "星期六";
			break;
		}
		default: {
			rtnStr = "";
			break;
		}
	}
	return rtnStr;
}

/*
函数：把字符串转换为日期对象
参数：yyyy-mm-dd或dd/mm/yyyy形式的字符串
返回：Date对象
注：IE下不支持直接实例化日期对象，如new Date("2011-04-06")
*/
Date.prototype.convertDate = function(date) {
	var flag = true;
	var dateArray = date.split("-");
	if (dateArray.length != 3) {
		dateArray = date.split("/");
		if (dateArray.length != 3) {
			return null;
		}
		flag = false;
	}
	var newDate = new Date();
	if (flag) {
		// month从0开始
		newDate.setFullYear(dateArray[0], dateArray[1] - 1, dateArray[2]);
	} else {
		newDate.setFullYear(dateArray[2], dateArray[1] - 1, dateArray[0]);
	}
	newDate.setHours(0, 0, 0);
	return newDate;
};

/*
函数：计算两个日期之间的差值
参数：date是日期对象
flag：ms-毫秒，s-秒，m-分，h-小时，d-天，M-月，y-年
返回：当前日期和date两个日期相差的毫秒/秒/分/小时/天
*/
Date.prototype.dateDiff = function(date, flag) {
	var msCount = 1;
	date = new Date(date);
	switch (flag) {
		case "ms":
			msCount = 1;
			break;
		case "s":
			this.setMilliseconds(0);
			date.setMilliseconds(0);
			msCount = 1000;
			break;
		case "m":
			this.setSeconds(0, 0);
			date.setSeconds(0, 0);
			msCount = 60 * 1000;
			break;
		case "h":
			this.setMinutes(0, 0, 0);
			date.setMinutes(0, 0, 0);
			msCount = 60 * 60 * 1000;
			break;
		case "d":
			this.setHours(0, 0, 0, 0);
			date.setHours(0, 0, 0, 0);
			msCount = 24 * 60 * 60 * 1000;
			break;
	}
	var diff = this.getTime() - date.getTime();

	return Math.floor(diff / msCount);
};

/*
函数：格式化日期
参数：formatStr-格式化字符串
d：将日显示为不带前导零的数字，如1
dd：将日显示为带前导零的数字，如01
ddd：将日显示为缩写形式，如Sun
dddd：将日显示为全名，如Sunday
M：将月份显示为不带前导零的数字，如一月显示为1
MM：将月份显示为带前导零的数字，如01
MMM：将月份显示为缩写形式，如Jan
MMMM：将月份显示为完整月份名，如January
yy：以两位数字格式显示年份
yyyy：以四位数字格式显示年份
h：使用12小时制将小时显示为不带前导零的数字，注意||的用法
hh：使用12小时制将小时显示为带前导零的数字
H：使用24小时制将小时显示为不带前导零的数字
HH：使用24小时制将小时显示为带前导零的数字
m：将分钟显示为不带前导零的数字
mm：将分钟显示为带前导零的数字
s：将秒显示为不带前导零的数字
ss：将秒显示为带前导零的数字
l：将毫秒显示为不带前导零的数字
ll：将毫秒显示为带前导零的数字
tt：显示am/pm
TT：显示AM/PM
返回：格式化后的日期
*/
Date.prototype.format = function(formatStr) {
	var date = this;

	/*
	函数：填充0字符
	参数：value-需要填充的字符串, length-总长度
	返回：填充后的字符串
	*/
	var zeroize = function(value, length) {
		if (!length) {
			length = 2;
		}
		value = new String(value);
		for (var i = 0, zeros = ''; i < (length - value.length); i++) {
			zeros += '0';
		}
		return zeros + value;
	};
	return formatStr.replace(/"[^"]*"|'[^']*'|\b(?:d{1,4}|M{1,4}|yy(?:yy)?|([hHmstT])\1?|[lLZ])\b/g, function($0) {
		switch ($0) {
			case 'd':
				return date.getDate();
			case 'dd':
				return zeroize(date.getDate());
			case 'ddd':
				return ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat'][date.getDay()];
			case 'dddd':
				return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][date
					.getDay()
				];
			case 'M':
				return date.getMonth() + 1;
			case 'MM':
				return zeroize(date.getMonth() + 1);
			case 'MMM':
				return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][
					date.getMonth()
				];
			case 'MMMM':
				return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',
					'September', 'October', 'November', 'December'
				][date.getMonth()];
			case 'yy':
				return new String(date.getFullYear()).substr(2);
			case 'yyyy':
				return date.getFullYear();
			case 'h':
				return date.getHours() % 12 || 12;
			case 'hh':
				return zeroize(date.getHours() % 12 || 12);
			case 'H':
				return date.getHours();
			case 'HH':
				return zeroize(date.getHours());
			case 'm':
				return date.getMinutes();
			case 'mm':
				return zeroize(date.getMinutes());
			case 's':
				return date.getSeconds();
			case 'ss':
				return zeroize(date.getSeconds());
			case 'f':
				return date.getMilliseconds();
			case 'ff':
				return zeroize(date.getMilliseconds());
			case 'fff':
				return zeroize(date.getMilliseconds(), 3);
			case 'tt':
				return date.getHours() < 12 ? 'am' : 'pm';
			case 'TT':
				return date.getHours() < 12 ? 'AM' : 'PM';
		}
	});
}

 